// 代码生成路由
import { Router } from 'express';
import genController from '@/controllers/tool/gen.controller';
import { authMiddleware } from '@/middlewares/auth.middleware';
import { permissionMiddleware, roleMiddleware } from '@/middlewares/permission.middleware';

const router = Router();

/**
 * 代码生成路由
 * 路径前缀：/tool/gen
 */

// 所有路由均需认证
router.use(authMiddleware);

// ================== 代码生成相关 ==================
// 查询代码生成列表
router.get('/list', permissionMiddleware('tool:gen:list'), genController.list);

// 查询数据库列表
router.get('/db/list', permissionMiddleware('tool:gen:list'), genController.dbList);

// 查询表详细信息
router.get('/:tableId', permissionMiddleware('tool:gen:query'), genController.getInfo);

// 查询表字段列表
router.get('/column/:tableId', permissionMiddleware('tool:gen:list'), genController.columnList);

// 导入表结构
router.post('/importTable', permissionMiddleware('tool:gen:import'), genController.importTable);

// 创建表结构
router.post('/createTable', roleMiddleware(['admin']), genController.createTable);

// 修改代码生成业务
router.put('/', permissionMiddleware('tool:gen:edit'), genController.update);

// 删除代码生成
router.delete('/:tableIds', permissionMiddleware('tool:gen:remove'), genController.remove);

// 预览代码
router.get('/preview/:tableId', permissionMiddleware('tool:gen:preview'), genController.preview);

// 生成代码（下载方式）
router.get('/download/:tableName', permissionMiddleware('tool:gen:code'), genController.download);

// 生成代码（自定义路径）
router.get('/genCode/:tableName', permissionMiddleware('tool:gen:code'), genController.genCode);

// 同步数据库
router.get('/synchDb/:tableName', permissionMiddleware('tool:gen:edit'), genController.syncDb);

// 批量生成代码
router.get('/batchGenCode', permissionMiddleware('tool:gen:code'), genController.batchGenCode);

export default router; 